package com.example.mapper;

import com.example.entity.MerchantInventoryRecord;
import com.example.dto.MerchantInventoryQueryDTO;
import com.example.vo.MerchantInventoryRecordVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商家库存记录Mapper接口
 */
@Mapper
public interface MerchantInventoryRecordMapper {

    /**
     * 插入商家库存记录
     */
    int insert(MerchantInventoryRecord record);

    /**
     * 根据ID查询
     */
    MerchantInventoryRecord selectById(Long id);

    /**
     * 根据ID更新
     */
    int updateById(MerchantInventoryRecord record);

    /**
     * 根据ID删除（逻辑删除）
     */
    int deleteById(Long id);

    /**
     * 分页查询商家库存记录
     */
    List<MerchantInventoryRecordVO> selectPageList(@Param("query") MerchantInventoryQueryDTO query);

    /**
     * 查询总数
     */
    Long selectCount(@Param("query") MerchantInventoryQueryDTO query);

    /**
     * 根据商家ID查询库存记录
     */
    List<MerchantInventoryRecordVO> selectByMerchantId(@Param("merchantId") Long merchantId);

    /**
     * 根据商品ID查询库存记录
     */
    List<MerchantInventoryRecordVO> selectByProductId(@Param("productId") Long productId);

    /**
     * 查询入库记录（从管理员进货）
     */
    List<MerchantInventoryRecordVO> selectInRecords(@Param("query") MerchantInventoryQueryDTO query);

    /**
     * 查询出库记录（销售给客户）
     */
    List<MerchantInventoryRecordVO> selectOutRecords(@Param("query") MerchantInventoryQueryDTO query);

    /**
     * 根据关联订单ID查询记录
     */
    List<MerchantInventoryRecordVO> selectByOrderId(@Param("orderId") Long orderId);
} 